Spring Boot এবং Hibernate ব্যবহার করে ডেটাবেস ইন্টিগ্রেশন করা খুবই সহজ এবং কার্যকর। Hibernate একটি জনপ্রিয় ORM টুল যা JPA স্পেসিফিকেশন অনুসরণ করে এবং Spring Boot ডেটাবেস কনফিগারেশনের কাজ আরও সহজ করে দেয়। নিচে উদাহরণ সহ একটি পূর্ণাঙ্গ প্রজেক্ট তৈরি করা দেখানো হয়েছে।
উদাহরণ: Spring Boot এবং Hibernate ব্যবহার করে একটি CRUD অ্যাপ্লিকেশন তৈরি
আমরা একটি প্রোডাক্ট ম্যানেজমেন্ট অ্যাপ্লিকেশন তৈরি করবো, যেখানে প্রোডাক্ট ডেটাবেসে সংরক্ষণ, আপডেট, মুছে ফেলা এবং দেখা যাবে।
১. Maven ডিপেনডেন্সি যোগ করা
Spring Boot এবং Hibernate এর জন্য Maven pom.xml ফাইলে ডিপেনডেন্সি যোগ করতে হবে।
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
২. ডেটাবেস কনফিগারেশন (application.properties)
application.properties ফাইলে ডেটাবেস কনফিগারেশন দিতে হবে।
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
৩. Entity ক্লাস তৈরি করা
Hibernate ব্যবহার করে একটি Entity ক্লাস তৈরি করুন।
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
৪. JPA Repository ইন্টারফেস তৈরি করা
Spring Data JPA ব্যবহার করে একটি রিপোজিটরি ইন্টারফেস তৈরি করুন।
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
}
৫. সার্ভিস ক্লাস তৈরি করা
ডেটাবেস অপারেশন পরিচালনার জন্য একটি সার্ভিস ক্লাস তৈরি করুন।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public List<Product> getAllProducts() {
return productRepository.findAll();
}
public Product getProductById(Long id) {
return productRepository.findById(id).orElse(null);
}
public Product saveProduct(Product product) {
return productRepository.save(product);
}
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
৬. কন্ট্রোলার ক্লাস তৈরি করা
RESTful API তৈরি করতে একটি কন্ট্রোলার ক্লাস তৈরি করুন।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping
public List<Product> getAllProducts() {
return productService.getAllProducts();
}
@GetMapping("/{id}")
public Product getProductById(@PathVariable Long id) {
return productService.getProductById(id);
}
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.saveProduct(product);
}
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
Product existingProduct = productService.getProductById(id);
if (existingProduct != null) {
existingProduct.setName(product.getName());
existingProduct.setPrice(product.getPrice());
return productService.saveProduct(existingProduct);
}
return null;
}
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
৭. অ্যাপ্লিকেশন রান করা
Spring Boot অ্যাপ্লিকেশন রান করার জন্য @SpringBootApplication এনোটেশন সহ মেইন ক্লাস তৈরি করুন।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootOrmApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootOrmApplication.class, args);
}
}
API টেস্টিং
আপনার অ্যাপ্লিকেশন চালু হলে নিচের API রিকোয়েস্টগুলো দিয়ে টেস্ট করতে পারেন:
- GET
/products: সমস্ত প্রোডাক্ট দেখতে। - GET
/products/{id}: নির্দিষ্ট প্রোডাক্ট দেখতে। - POST
/products: নতুন প্রোডাক্ট যোগ করতে। - PUT
/products/{id}: বিদ্যমান প্রোডাক্ট আপডেট করতে। - DELETE
/products/{id}: প্রোডাক্ট ডিলিট করতে।
সারাংশ
Spring Boot এবং Hibernate এর সাহায্যে একটি সম্পূর্ণ CRUD অ্যাপ্লিকেশন তৈরি করা সহজ। Spring Boot এর অটো-কনফিগারেশন এবং Hibernate এর ORM ক্ষমতা ব্যবহার করে ডেটাবেস সংক্রান্ত কাজগুলো দ্রুত এবং কার্যকরভাবে সম্পন্ন করা যায়।
Read more